#ifndef common_interface_h
#define common_interface_h

#include <common/include/typedef.h>

namespace cmn{
	class interface_t
	{
	public:
		virtual ~interface_t() {}
		virtual dword release() = 0;
	};

	class noncopyable
	{
	public:
		noncopyable() {}
	private:
		noncopyable(const noncopyable& rhs) = delete;
		noncopyable& operator=(const noncopyable& rhs) = delete;
	};

#	define singleton_decl(classname) static classname* instance();
#	define singleton_impl(classname) classname* classname::instance() { static classname obj; return &obj; }
}

#endif	//common_interface_h
